#include "barrier.h"
#include <QPainter>

int Barrier::randValue = 0;

Barrier::Barrier()
{
    m_anim.setTargetObject(this);
    m_anim.setPropertyName("pos");
    isMain = false;

    connect(&m_anim,SIGNAL(finished()),this,SLOT(BeginMove()));// 当动画结束时，触发BeginMove函数
}

QRectF Barrier::boundingRect() const
{
    return  BARRIER_BOUNDING;
}

void Barrier::paint( QPainter* pPainter,
                        const QStyleOptionGraphicsItem* pOption,
                        QWidget* pWidget )
{
    Q_UNUSED(pOption);
    Q_UNUSED(pWidget);
    QPixmap src(":/barrier.png");//加载图片
    pPainter->drawPixmap(BARRIER_BOUNDING.toRect(),src);// 绘制图片
}

void Barrier::BeginMove()//开始移动
{
    if(isMain)
    {
        randValue = rand()%DIFFICULTY-DIFFICULTY/2; // 如果是主屏幕中的障碍，则随机出该障碍的初始位置
    }
    setPos(lastPos+QPointF(0,randValue));// 设置当前障碍的位置
    m_anim.setDuration((EDGE_BOUNDING.width()/2+BARRIER_BOUNDING.width())/SPEED*1000);// 设置障碍移动的持续时间
    m_anim.setStartValue(this->pos());// 设置动画开始的起点
    m_anim.setEndValue(this->pos()+QPoint(-EDGE_BOUNDING.width()/2-BARRIER_BOUNDING.width(),0));// 设置动画结束的终点
    m_anim.start();// 开始动画
}

void Barrier::reBegin()
{
    setPos(lastPos);// 将障碍重置到上一次的位置
    m_anim.stop(); // 停止动画
}
